package org.scub.foundation.egicom.client.spring.mvc.controller;

import java.util.ArrayList;
import java.util.List;

import org.scub.foundation.egicom.client.spring.mvc.model.CategorieModel;
import org.scub.foundation.egicom.client.spring.mvc.model.ProduitModel;
import org.scub.foundation.fournisseur.egicom.core.dto.CategorieDto;
import org.scub.foundation.fournisseur.egicom.core.dto.ProduitDto;
import org.scub.foundation.fournisseur.egicom.core.service.interfaces.CategorieService;
import org.scub.foundation.fournisseur.egicom.core.service.interfaces.ProduitService;
import org.scub.foundation.framework.base.mapping.util.MapperDozerBean;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
/**
 * Contrôleur permettant la sauvegarde d'un contact.
 * @author Julie Jageneau
 */
@Controller
public class ManageFournisseurController {

    /** Mapper Dozer */
    private MapperDozerBean mapperDozerBean;

    public void setCategorieService(CategorieService categorieService) {
        this.categorieService = categorieService;
    }
    

    /** Services permettant de gérer les categories */
    private CategorieService categorieService;


    /** Services permettant de gérer les produits */
    private ProduitService produitService;
    
    
    
    public void setProduitService(ProduitService produitService) {
        this.produitService = produitService;
    }


    /** URL de la page formView */
    private String index;

    private String inscription;
    
    
    @RequestMapping(value="/index")
    public String indexPage(Model model){
        List<CategorieModel> categories=new ArrayList<CategorieModel>();
        categories= mapperDozerBean.mapList(categorieService.getAllCategories(),CategorieModel.class);
        //System.out.println(categories.size());
        List<ProduitModel> produits=mapperDozerBean.mapList(produitService.getAllProducts(), ProduitModel.class);
        
        System.out.println(produits.size());
       System.out.println(produitService.sayhello());
       System.out.println(produits.get(0).getLibeleProduit());
       model.addAttribute("ViewMode", "showAll");
        model.addAttribute("listeCategories", categories);
        model.addAttribute("listeProduits", produits);
        return index;
    }
    
    @RequestMapping(value="/detailProduit", method = RequestMethod.GET)
    public String detailProduit(Model model,@RequestParam("PRODUIT_ID") Long PRODUIT_ID){
//        System.out.println("detail");
//        ProduitDto prod = new ProduitDto();
//        prod.setId(new Long(9));
//        prod.setLibeleProduit("prod8");
//        prod.setDescription("produit9");
//        prod.setDateAjout("01/01/2010");
//        prod.setImage("product_9");
//        prod.setDevis("Devis");
//        prod.setPrix(4.7);
//        prod.setQuantiteProduit(4);
//        prod.setTaxe(4);
//        produitService.createProduct(prod);
        
        ProduitModel produit=mapperDozerBean.map(produitService.getProduitById(PRODUIT_ID),ProduitModel.class);
        System.out.println(produit.getImage());
        model.addAttribute("detailProduit", produit);
        model.addAttribute("ViewMode", "detail");
        return index;
    }
    
    @RequestMapping(value="/catProducts", method = RequestMethod.GET)
    public String catProducts(Model model,@RequestParam("CATEGORIE_ID") Long CATEGORIE_ID){
        System.out.println("categorie");
        List<ProduitModel> produits = new ArrayList<ProduitModel>();
        produits = mapperDozerBean.mapList(produitService.getProductsByCategorie(CATEGORIE_ID), ProduitModel.class);
        model.addAttribute("Id", CATEGORIE_ID);
        model.addAttribute("ViewMode", "ProductsByCategrorie");
        model.addAttribute("listeProduits", produits);
        return index;
    }
    
    @RequestMapping(value="/inscription", method = RequestMethod.GET)
    public String inscription(Model model){
        System.out.println("inscription");
        return inscription;
    }

    /**
     * Setter de mapperDozerBean
     * @param mapperDozerBean nouveau mapperDozerBean
     */
    public void setMapperDozerBean(MapperDozerBean mapperDozerBean) {
        this.mapperDozerBean = mapperDozerBean;
    }

    public void setIndex(String index) {
        this.index = index;
    }

    public void setInscription(String inscription) {
        this.inscription = inscription;
    }



    /**
     * Setter de formView
     * @param formView nouveau formView
     */
    
//
//    private CategorieModel mapCategorie(CategorieDto categorie) {
//        final CategorieModel contactModel = mapperDozerBean.map(categorie, CategorieModel.class);
//        return contactModel;
//    }
//    
//    private List<CategorieModel> mapCategorieList(List<CategorieDto> categories) {
//        final List<CategorieModel> categoriesModel = new ArrayList<CategorieModel>();
//        for (CategorieDto categorie : categories) {
//            categoriesModel.add(mapCategorie(categorie));
//        }
//        return categoriesModel;
//    }

}
